﻿using Microsoft.Practices.Unity;
using MusicManager.BL;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace MusicManagerService
{
    // HINWEIS: Mit dem Befehl "Umbenennen" im Menü "Umgestalten" können Sie den Klassennamen "Service1" sowohl im Code als auch in der SVC- und der Konfigurationsdatei ändern.
    // HINWEIS: Wählen Sie zum Starten des WCF-Testclients zum Testen dieses Diensts Service1.svc oder Service1.svc.cs im Projektmappen-Explorer aus, und starten Sie das Debuggen.
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
    public class MusicManagerService : IMusic, IUser
    {
        //public string GetData(int value)
        //{
        //    return string.Format("You entered: {0}", value);
        //}

        //public CompositeType GetDataUsingDataContract(CompositeType composite)
        //{
        //    if (composite == null)
        //    {
        //        throw new ArgumentNullException("composite");
        //    }
        //    if (composite.BoolValue)
        //    {
        //        composite.StringValue += "Suffix";
        //    }
        //    return composite;
        //}

        [Dependency]
        public IMusicManagerBL Logic { get; set; }

        public MusicManagerService()
        {

        }

        #region IMusic Members

        //IEnumerable<DomainModel.Music> IMusic.FindAll()
        //{
        //    throw new NotImplementedException();
        //}

        public IEnumerable<DomainModel.Music> FindAllForToken(string token)
        {
            return Logic.GetPlaylistFull(token);
        }

        public DomainModel.Music FindByTokenAndName(string token, string name)
        {
            return Logic.GetMusic(name, token);
        }

        public bool InsertMusic(DomainModel.Music music, string token)
        {
            return Logic.AddMusic(music.Name, music.Song, token);
        }
        #endregion

        #region IUser Member
        public IEnumerable<DomainModel.User> FindByNameLike(string name)
        {
            return Logic.GetUserByNameLike(name);
        }

        public IEnumerable<DomainModel.User> FindAll()
        {
            return Logic.GetUserList();
        }

        public bool InsertUser(DomainModel.User user)
        {
            return Logic.CreateUser(user.Id, user.Name, user.Password);
        }
        #endregion
    }
}
